﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>While Loop - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The While loop statement performs a series of code lines repeatedly until the specified expression evaluates to false." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>While-loop</h1>

<p>重复执行一系列函数, 直到指定的<a href="../Variables.htm#Expressions">表达式</a>计算结果为假时终止.</p>

<pre class="Syntax"><span class="func">While</span> <i>Expression</i></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Expression</dt>
  <dd><p>任何有效的<a href="../Variables.htm#Expressions">表达式</a>. 例如: <code>while x &lt; y</code>.</p></dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>如果表达式括在括号中, <code>While</code> 后的空格或制表符是可选的, 例如 <code>While(expression)</code>.</p>
<p>在每次重复执行前都会计算一次表达式. 如果表达式计算结果为 true(即除空字符串和数值 0 以外的任何结果), 那么执行循环体; 否则跳到循环体之后一行执行.</p>
<p>while 循环后通常跟着<a href="Block.htm">区块</a>, 这是形成循环 <em>主体</em> 的语句的集合. 但是, 只有一个语句的循环不需要区块(为此, "if" 及其 "else" 计为单个语句).</p>
<p id="otb"><a href="Block.htm#otb">One True Brace(OTB) 样式</a>可选使用, 这使得开括号可以出现在同一行, 而不是下面一行. 例如: <code>while x &lt; y {</code>.</p>
<p>内置变量 <strong>A_Index</strong> 包含当前循环迭代的次数. 第一次执行循环的表达式和循环体时, 它包含 1. 第二次, 它包含 2; 等等. 如果内部循环被外部循环包围, 则内部循环优先. A_Index 在所有类型的循环内工作, 但在循环外为 0.</p>
<p>与所有循环一样, <a href="Break.htm">Break</a> 可用于提前退出循环. 此外, <a href="Continue.htm">Continue</a> 可用于跳过当前迭代的其余部分, 在此期间 A_Index 增加 1, 而 while 循环的表达式将被重新计算. 如果仍然为 true, 则开始新的迭代; 否则, 循环结束.</p>
<p>循环后面可以有一个可选的 <a href="Else.htm">Else</a> 语句, 如果循环的迭代次数为零, 则执行 Else 语句.</p>
<p>专用循环: 循环可以用来自动检索文件, 文件夹或注册表项(每次一个). 有关详情, 请参阅 <a href="LoopFiles.htm">file-loop</a> 和 <a href="LoopReg.htm">registry-loop</a>. 此外, <a href="LoopRead.htm">file-reading loops</a> 可以对整个文件的内容进行操作, 每次一行. 最后, <a href="LoopParse.htm">parsing loops</a> 可以对可分隔的字符串中包含的各个字段进行操作.</p>

<h2 id="Related">相关</h2>
<p><a href="Until.htm">Until</a>, <a href="Break.htm">Break</a>, <a href="Continue.htm">Continue</a>, <a href="Block.htm">区块</a>, <a href="Loop.htm">Loop</a>, <a href="For.htm">For-loop</a>, <a href="LoopFiles.htm">Files-and-folders loop</a>, <a href="LoopReg.htm">Registry loop</a>, <a href="LoopRead.htm">File-reading loop</a>, <a href="LoopParse.htm">Parsing loop</a>, <a href="If.htm">If (表达式)</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 当用户按住鼠标左键拖动时, 显示一个拖动区域大小的工具提示.</p>
<pre>CoordMode "Mouse", "Screen"

~LButton::
{
    MouseGetPos &amp;begin_x, &amp;begin_y
    <strong>while</strong> GetKeyState("LButton")
    {
        MouseGetPos &amp;x, &amp;y
        ToolTip begin_x ", " begin_y "`n" Abs(begin_x-x) " x " Abs(begin_y-y)
        Sleep 10
    }
    ToolTip
}</pre>
</div>

</body>
</html>